include(SanitizeInput)

sanitizeinput(USE_THREADS)

if(NOT WIN32)
	find_package(Threads)
endif()

if((USE_THREADS STREQUAL ON OR USE_THREADS STREQUAL "") AND THREADS_FOUND)
	set(USE_THREADS "pthreads")
elseif((USE_THREADS STREQUAL ON OR USE_THREADS STREQUAL "") AND WIN32)
	set(USE_THREADS "win32")
elseif(USE_THREADS STREQUAL "")
	set(USE_THREADS OFF)
endif()

if(USE_THREADS STREQUAL "pthreads")
	if(NOT THREADS_FOUND)
		message(FATAL_ERROR "pthreads were requested but not found")
	endif()

	list(APPEND LIBGIT2_SYSTEM_LIBS ${CMAKE_THREAD_LIBS_INIT})
	list(APPEND LIBGIT2_PC_LIBS ${CMAKE_THREAD_LIBS_INIT})

	set(GIT_THREADS 1)
	set(GIT_THREADS_PTHREADS 1)
	add_feature_info("Threads" ON "using pthreads")
elseif(USE_THREADS STREQUAL "win32")
	if(NOT WIN32)
		message(FATAL_ERROR "Win32 API support is not available on this platform")
	endif()

	set(GIT_THREADS 1)
	set(GIT_THREADS_WIN32 1)
	add_feature_info("Threads" ON "using Win32 APIs")
elseif(USE_THREADS STREQUAL OFF)
	set(GIT_THREADS 0)
	add_feature_info("Threads" OFF "threads support is disabled")
else()
	message(FATAL_ERROR "unknown threads option: ${USE_THREADS}")
endif()
